package jmine.tec.hydra.persister.listener;

import jmine.tec.annotations.Unmodifiable;
import jmine.tec.hydra.domain.specification.HydraScheduledSpecification;
import jmine.tec.hydra.schedule.HydraScheduler;
import bancosys.tec.persist.persister.listener.AbstractPersisterListener;

/**
 * Persister Listener que controla o agendamento das especificações cirada/removidas.
 * 
 * @author piercio
 * @deprecated use jmine.tec.scheduling
 */
@Deprecated
@Unmodifiable
public class HydraScheduledSpecificationPersisterListener extends AbstractPersisterListener<HydraScheduledSpecification> {

    private HydraScheduler scheduler;

    /**
     * Agenda a especificação assim que ela é criada.
     * 
     * @param bean a especificação
     */
    @Override
    protected void afterInsert(HydraScheduledSpecification bean) {
        this.scheduler.scheduleJob(bean);
    }

    /**
     * Troca o job de execução da especificação.
     * 
     * @param bean a especificação
     */
    @Override
    public void afterUpdate(HydraScheduledSpecification bean) {
        this.scheduler.scheduleJob(bean);
    }

    /**
     * Remove o agendamento na remoção da especificação.
     * 
     * @param bean a especificação
     */
    @Override
    public void afterRemove(HydraScheduledSpecification bean) {
        this.scheduler.deleteJob(bean);
    }

    /**
     * @param scheduler the scheduler to set
     */
    public void setScheduler(HydraScheduler scheduler) {
        this.scheduler = scheduler;
    }

}
